{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 《数据可视化》—— 基于Python的应用"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 课程特点\n",
    "\n",
    "###  　Python应用 + 数据的分析 + 可视化展示"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 课程教材"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**Python数据分析基础教程——数据可视化（第2版）**\n",
    "\n",
    "**王斌会 王术 电子工业出版社 2021.1**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 课程资源\n",
    "\n",
    "> 课程博客：http://Rstat.leanote.com \n",
    "\n",
    "> 课程平台：http://47.113.88.40:3838/Rstat"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第1章  数据分析软件介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true,
    "toc-nb-collapsed": true
   },
   "source": [
    "## 1.1  数据分析软件简介"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true,
    "toc-nb-collapsed": true
   },
   "source": [
    "## 1.2  Python语言介绍"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.2.1  Python简介"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.2.2  Python的功能"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.2.2.1  Python的特色"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.2.2.2  Python的特点"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.2.2.3  Python的库"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.2.3  Python编程环境"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.2.3.1  Python基础编程环境"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 本书采用基于Anaconda的Jupyter平台进行数据分析。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.2.3.2  Anaconda计算发行包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 在Jupyter中安装包也很容易，例如安装plotnine包执行下面的命令\n",
    "pip install plotnine"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "tags": []
   },
   "source": [
    "## 1.3  Python数据分析平台"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.3.1  Jupyter数据分析平台"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.3.1.1  Jupyter 简介"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.3.1.2  Jupyter 的使用"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- 在AnacondaPrompt命令行输入\n",
    "\n",
    "> jupyter lab --notebook-dir=D:\\\\DaPy2  \n",
    "\n",
    "> jupyter notebook --notebook-dir=D:\\\\DaPy2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.3.1.3  Jupyter 的优点"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "987654321"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 无格式输出\n",
    "1 * 8 + 1\n",
    "12 * 8 + 2\n",
    "123 * 8 + 3 \n",
    "1234 * 8 + 4\n",
    "12345 * 8 + 5\n",
    "123456 * 8 + 6\n",
    "1234567 * 8 + 7\n",
    "12345678 * 8 + 8\n",
    "123456789 * 8 + 9"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "        1 * 8 + 1 = 9\n",
      "       12 * 8 + 2 = 98\n",
      "      123 * 8 + 3 = 987\n",
      "     1234 * 8 + 4 = 9876\n",
      "    12345 * 8 + 5 = 98765\n",
      "   123456 * 8 + 6 = 987654\n",
      "  1234567 * 8 + 7 = 9876543\n",
      " 12345678 * 8 + 8 = 98765432\n",
      "123456789 * 8 + 9 = 987654321\n"
     ]
    }
   ],
   "source": [
    "# 有格式输出\n",
    "print('        1 * 8 + 1 =', 1 * 8 + 1)\n",
    "print('       12 * 8 + 2 =', 12 * 8 + 2)\n",
    "print('      123 * 8 + 3 =', 123 * 8 + 3) \n",
    "print('     1234 * 8 + 4 =', 1234 * 8 + 4)\n",
    "print('    12345 * 8 + 5 =', 12345 * 8 + 5)\n",
    "print('   123456 * 8 + 6 =', 123456 * 8 + 6)\n",
    "print('  1234567 * 8 + 7 =', 1234567 * 8 + 7)\n",
    "print(' 12345678 * 8 + 8 =', 12345678 * 8 + 8)\n",
    "print('123456789 * 8 + 9 =', 123456789 * 8 + 9)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1×1=1 \n",
      "1×2=2 2×2=4 \n",
      "1×3=3 2×3=6 3×3=9 \n",
      "1×4=4 2×4=8 3×4=12 4×4=16 \n",
      "1×5=5 2×5=10 3×5=15 4×5=20 5×5=25 \n",
      "1×6=6 2×6=12 3×6=18 4×6=24 5×6=30 6×6=36 \n",
      "1×7=7 2×7=14 3×7=21 4×7=28 5×7=35 6×7=42 7×7=49 \n",
      "1×8=8 2×8=16 3×8=24 4×8=32 5×8=40 6×8=48 7×8=56 8×8=64 \n",
      "1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81 \n"
     ]
    }
   ],
   "source": [
    "# 乘法口诀\n",
    "for i in range(1,10): #range(1,10)=[1,2,3,4,5,6,7,8,9]\n",
    "     for j in range(1,i+1):\n",
    "        print(\"%d×%d=%d\"%(j,i,j*i),end=' ')\n",
    "     print()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2, 6, 10, 14, 18]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x=[1,3,5,7,9];x\n",
    "y=[2*i for i in x];y         #y=2x"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAiRUlEQVR4nO3deXxU9b3G8c+PnQQIS9ghhH0LASEsorUoqKiIAvWqt1rFWqrdrPXKIihwcUFra7m11iLiUrdqAoKKiAuIG8pSSEIIEMIWtrATsifzvX8kWkpBQjLJmck879eLF8mZcc4jhCcnZ875/pyZISIiwaeG1wFERKR8VOAiIkFKBS4iEqRU4CIiQUoFLiISpGpV5c4iIyMtOjq6KncpIhL01q5de8jMmp++vUoLPDo6mjVr1lTlLkVEgp5zbueZtusUiohIkFKBi4gEKRW4iEiQUoGLiAQpFbiISJA6Z4E75+Y75zKdc8mnbOvnnFvlnFvvnFvjnBtUuTFFROR0ZTkCfxEYedq2J4CZZtYPeKj0cxERqULnLHAzWwkcOX0z0Kj04whgr59ziYhUC0ezC5j5zkZO5BX6/bXLeyPPb4EPnHNPUvJNYOjZnuicmwBMAIiKiirn7kREgouZsSRpP9MXJ3Msp5CLOkcyoldLv+6jvG9i3g3ca2btgXuB58/2RDOba2ZxZhbXvPl/3AkqIlLtHDiRx8//vpZfvraO1hH1eefXF/u9vKH8R+C3AfeUfvwWMM8/cUREgpeZ8eaa3Tz83iYKinxMuaoHP724I7VqVs4Ff+Ut8L3AD4EVwGXAVn8FEhEJRrsO5zBlYSJfpB1mUMemPD4ulo6R4ZW6z3MWuHPudWAYEOmcywCmAz8D5jjnagF5lJ7jFhEJNcU+48Uvd/DkB5upWcPx8PUx/PegKGrUcJW+73MWuJndfJaHBvg5i4hIUNl6IIuJCYn8c9cxLu3enEfG9KFN4/pVtv8qHScrIlIdFBT5ePbTbTz9SRrhdWsy56Z+jO7bBucq/6j7VCpwEZHzsGH3MSYlJJK6P4tr+7ZhxrW9aNagridZVOAiImWQW1DMnz7awnOfpdO8YV2e+0kcl1fCpYHnQwUuInIOq9IPMzkhkR2Hc7h5UHumXN2TRvVqex1LBS4icjZZeYXMfj+VV7/eRVTTMF67czBDu0R6Hes7KnARkTP4JPUAUxcmc+BEHj/7QUd+d3l36tep6XWsf6MCFxE5xeGT+fzvuyksWr+X7i0b8tdbBtCvfWOvY52RClxEhJLb4N9J3MeMxRvJyivktyO68othXahTK3DXvVGBi0jI2388j2lvJ/HRpkz6tm/ME+Ni6d6qodexzkkFLiIhy8x4Y/VuHn1vE4U+H9Ou6cn4izpSswpug/cHFbiIhKQdh7KZsiCJr9IPc2GnZswe14cOzSp3+JS/qcBFJKQU+4z5n2/nDx9upnaNGswe24cbB7av8tvg/UEFLiIhY/P+LCbGb2BDxnFG9GzBw9f3oVVEPa9jlZsKXESqvYIiH39ZnsYzK9JoVK82f775AkbFtg7Ko+5TqcBFpFpbv/sYE+M3sOXASa7v14aHru1N0/A6XsfyCxW4iFRLOQVF/HHZFuZ/sZ2Wjeox//Y4Luvh7fApfyvLijzzgVFAppnFnLL918AvgWLgPTObWGkpRUTOw5dph5i8IIldR3K4ZUgUk0b2oGEADJ/yt7Icgb8IPA28/O0G59ylwHVAXzPLd861qJx4IiJldzy3kMeWbOKN1buJbhbGGxOGMKRTM69jVZqyLKm20jkXfdrmu4HZZpZf+pzMSsgmIlJmH6YcYNrbSRzMyufnP+zEvSO6Ua92YA2f8rfyngPvBvzAOfcIJYsa/4+ZrT7TE51zEyhd9DgqKqqcuxMRObNDJ/OZsXgj7ybuo0erhjz3kzhi2zX2OlaVKG+B1wKaAkOAgcCbzrlOZmanP9HM5gJzAeLi4v7jcRGR8jAzFq3fy8x3NpKdX8x9l3fjrmGdqV0zcIdP+Vt5CzwDWFBa2N8453xAJHDQb8lERM5i77Fcpi5MYvnmg1wQVTJ8qmvLwB8+5W/lLfC3gUuB5c65bkAd4JC/QomInInPZ7z6zS4efz+VYp/x0Khe3DY0OmiGT/lbWS4jfB0YBkQ65zKA6cB8YL5zLhkoAG470+kTERF/2X4om0kJiXyz/QgXd4nksbF9aN80zOtYnirLVSg3n+WhW/ycRUTkPxQV+5j3+Xae+nALdWvV4IkfxXLDgHZBfxu8P+hOTBEJWCl7TzApIZGkPce5sndLZl0XQ4tGwTt8yt9U4CIScPKLinn6kzT+umIbjcNq88yP+3NVTCsddZ9GBS4iAWXtzqNMSkgkLfMkY/u35cFretGkmgyf8jcVuIgEhOz8Ip5ctpkXv9xBm4j6vDh+IMO6a0rH91GBi4jnPtt6kCkLksg4msttF3bg/pE9aFBX9XQu+hMSEc8czynk4fdSeGttBp2ah/PWXRcyMLqp17GChgpcRDyxNHk/Dy5K5kh2Ab8Y1pnfDO9a7YdP+ZsKXESqVGZWHjMWb2RJ0n56tW7EC7cPJKZthNexgpIKXESqhJmxYN0e/vfdFHILi7n/yu5MuKRTSA2f8jcVuIhUuoyjOTywMJmVWw4S16EJs8fF0qVFA69jBT0VuIhUGp/P+PuqnTy+NBWAmaN7c+uQDtQI0eFT/qYCF5FKse3gSSbFJ7Jm51Eu6dacR8fE0K5JaA+f8jcVuIj4VWGxj7kr05nz8Vbq167Jkzf0ZVz/troNvhKowEXEb5L3HGdSQiIb957g6j6tmDG6Ny0aavhUZVGBi0iF5RUW838fb+VvK9NpGl6HZ2/pz8iY1l7HqvZU4CJSIat3HGFSfCLph7K5YUA7pl3Ti4iw2l7HCgnnvADTOTffOZdZuvrO6Y/d55wz51xk5cQTkUB1Mr+IhxYlc8OzX1FQ7OPvPx3E72/oq/KuQmU5An8ReBp4+dSNzrn2wBXALv/HEpFA9umWgzywIIm9x3O5fWg091/ZnXANn6pyZVlSbaVzLvoMDz0FTAQW+TuUiASmYzkFzHp3EwnrMujcPJz4uy5kQAcNn/JKub5lOueuA/aY2YZzXRrknJsATACIiooqz+5ExGNmxvvJ+3loUTLHcgr51aVd+PXwLtStpeFTXjrvAnfOhQEPUHL65JzMbC4wFyAuLk4r14sEmcwTeTy4KJkPNh6gT9sIXr5jML3aNPI6llC+I/DOQEfg26PvdsA659wgM9vvz3Ai4h0z4621GTz8bgr5RT4mX9WDOy/uSC0NnwoY513gZpYEfLfOkXNuBxBnZof8mEtEPLT7SA5TFiTxedohBkU3Zfa4PnRqruFTgeacBe6cex0YBkQ65zKA6Wb2fGUHE5GqV+wzXv5qB08s3UwNB7Ouj+HHg6I0fCpAleUqlJvP8Xi039KIiGfSMrOYGJ/Iul3HGNa9OY+M6UPbxvW9jiXfQxduioS4wmIfz67Yxp8/SSO8bk2eurEv1/fT8KlgoAIXCWFJGce5P34DqfuzGBXbmhmjexPZoK7XsaSMVOAiISivsJinPtrCcyvTiWxQl7m3DuCK3q28jiXnSQUuEmK+Tj/M5AVJbD+UzU0D2zPl6p5E1Nf8kmCkAhcJEVl5hTy+NJVXVu2ifdP6vHrnYC7qojl0wUwFLhIClqdmMnVhEvtO5PHTizty3xXdCKujf/7BTn+DItXYkewCZr2bwsJ/7qFriwYk3D2U/lFNvI4lfqICF6mGzIx3E/cxY/FGjucW8pvhXfnlpZ01fKqaUYGLVDMHTuQxdWEyH206QGy7CF65czA9W2v4VHWkAhepJsyMf6zezSNLNlFQ5GPq1T0Zf1G0hk9VYypwkWpg1+EcJi9I5MtthxncsSmPj4slOjLc61hSyVTgIkGs2Ge88MV2nly2mVo1avDomD7cNLC9hk+FCBW4SJDavD+LSQmJrN99jMt6tOCRMTG0jtDwqVCiAhcJMgVFPp5ZkcZflqfRsF5t5tzUj9F922j4VAhSgYsEkQ27jzExPpHNB7IY3bcN06/tRTMNnwpZZVnQYT4wCsg0s5jSbb8HrgUKgG3AeDM7Vok5RUJabkExf/xwM89/vp0WDesx7ydxjOjV0utY4rGyXF/0IjDytG0fAjFmFgtsAab4OZeIlPpq22FGzlnJc59t56ZBUSz73SUqbwHKtiLPSudc9Gnblp3y6SrgR37OJRLyTuQV8tiSVF7/ZhcdmoXx2s8GM7Szhk/Jv/jjHPgdwD/O9qBzbgIwASAqKsoPuxOp/j5KOcC0t5PJzMpjwiWduHdEN+rX0W3w8u8qVODOualAEfDq2Z5jZnOBuQBxcXFWkf2JVHeHT+Yz850UFm/YS/eWDXn21gH0a9/Y61gSoMpd4M652yl5c3O4mamYRSrAzFi8YS8zFm/kZH4R947oxt3DOlOnlm6Dl7MrV4E750YCE4EfmlmOfyOJhJZ9x3OZtjCZj1Mz6du+MU+Mi6V7q4Zex5IgUJbLCF8HhgGRzrkMYDolV53UBT4svXlglZndVYk5Raodn894ffUuHluSSpHPx7RrejL+oo7U1G3wUkZluQrl5jNsfr4SsoiEjB2Hspm8IJFV6UcY2rkZs8fGEtUszOtYEmR0J6ZIFSoq9jH/i+38YdkW6tSsweyxfbhxYHvdBi/logIXqSKb9p1gUkIiiRnHGdGzJQ9fH0OriHpex5IgpgIXqWT5RcX8Zfk2nlmeRkT92vz55gsYFdtaR91SYSpwkUq0btdRJsUnsjXzJGMuaMuDo3rRNLyO17GkmlCBi1SCnIIi/rBsC/O/2E6rRvWYf3scl/XQ/BLxLxW4iJ99kXaIyQsS2X0kl1uGRDFpZA8a1qvtdSyphlTgIn5yPLeQx5Zs4o3Vu+kYGc4/JgxhcKdmXseSakwFLuIHyzbuZ9rbyRw6mc/Pf1gyfKpebQ2fksqlAhepgINZ+cx4ZyPvJe6jR6uGzLstjth2jb2OJSFCBS5SDmbG2+v3MPOdFHLyi7nv8m7cNawztWtq+JRUHRW4yHnacyyXqQuTWLH5IBdElQyf6tpSw6ek6qnARcrI5zNe/WYXs5dswmfw0Khe3DY0WsOnxDMqcJEySD94kskJSXyz4wgXd4nksbF9aN9Uw6fEWypwke9RVOzjuc+289RHW6hXqwZP/CiWGwa0023wEhBU4CJnkbL3BBMTNpC85wRX9m7JrOtiaNFIw6ckcKjARU6TV1jM05+k8eyn22gcVptnftyfq2Ja6ahbAk5ZVuSZT8nal5lmFlO6rSklK9FHAzuA/zKzo5UXU6RqrN15hInxiWw7mM3Y/m158JpeNNHwKQlQZblo9UVg5GnbJgMfm1lX4OPSz0WCVnZ+ETMWb+RHz35FXqGPF8cP5I//1U/lLQGtLEuqrXTORZ+2+TpK1skEeAlYAUzyZzCRqvLZ1oNMWZBExtFcfnJhByaO7EGDujq7KIGvvF+lLc1sX+nH+4Gzzsl0zk0AJgBERUWVc3ci/nc8p5BZ76UQvzaDTpHhvPnzCxnUsanXsUTKrMKHGWZmzjn7nsfnAnMB4uLizvo8kaq0NHkfDy7ayJHsAn4xrDO/Gd5Vw6ck6JS3wA8451qb2T7nXGsg05+hRCpLZlYe0xdt5P3k/fRq3YgXbh9ITNsIr2OJlEt5C3wxcBswu/T3RX5LJFIJzIyEdXuY9W4KuYXF3H9ldyZc0knDpySoleUywtcpecMy0jmXAUynpLjfdM79FNgJ/FdlhhSpiIyjOTywMJmVWw4yoEMTHh8XS5cWDbyOJVJhZbkK5eazPDTcz1lE/MrnM/6+aiePL00FYObo3tw6pAM1NHxKqgldKyXVUlrmSSYnJLJm51F+0DWSR8do+JRUPypwqVYKi33MXZnOnI+2Ur9OTZ68oS/j+rfVbfBSLanApdpI3nOcifGJpOw7wdV9WjFjdG9aNNTwKam+VOAS9PIKi5nz8VbmrkynSVgdnr2lPyNjWnsdS6TSqcAlqK3ecYRJ8YmkH8rmhgHtmHZNLyLCansdS6RKqMAlKJ3ML+KJpam8/NVO2jauz8t3DOKSbs29jiVSpVTgEnQ+3XKQBxYksfd4LrcPjeb+K7sTruFTEoL0VS9B42h2AbPeS2HBuj10bh5O/F0XMqCDhk9J6FKBS8AzM95P3s9Di5I5llPIry7twq8u66LhUxLyVOAS0DJP5PHgomQ+2HiAmLaNeOmOQfRuo+FTIqAClwBlZry1NoOH300hr8jHpJE9+NkPOlJLw6dEvqMCl4Cz+0gOUxYk8XnaIQZFN2X2uD50aq7hUyKnU4FLwCj2GS9/tYMnlm6mhoNZ1/Xmx4M1fErkbFTgEhDSMrOYGJ/Iul3HGNa9OY+M6UPbxvW9jiUS0FTg4qnCYh9/+3Qb//dxGmF1a/LUjX25vp+GT4mUhQpcPJOUcZz74zeQuj+La2JbM3N0byIb1PU6lkjQqFCBO+fuBe4EDEgCxptZnj+CSfWVV1jMUx9t4bmV6UQ2qMvfbh3Alb1beR1LJOiUu8Cdc22B3wC9zCzXOfcmcBPwop+ySTX0dfphJi9IYvuhbG6Ma88D1/Qkor6GT4mUR0VPodQC6jvnCoEwYG/FI0l1lJVXyONLU3ll1S7aN63Pq3cO5qIukV7HEglq5S5wM9vjnHsS2AXkAsvMbNnpz3POTQAmAERFRZV3dxLElqdmMnVhEvtO5PHTizty3xXdCKujt19EKqrct7U555oA1wEdgTZAuHPultOfZ2ZzzSzOzOKaN9e4z1ByJLuAe/+xnvEvria8bi0S7h7Kg6N6qbxF/KQi/5JGANvN7CCAc24BMBR4xR/BJHiZGe8l7WP6oo0czy3kN8O78stLO1O3loZPifhTRQp8FzDEORdGySmU4cAav6SSoHXgRB7T3k7mw5QDxLaL4JU7B9OzdSOvY4lUSxU5B/61cy4eWAcUAf8E5vormAQXM+Mfq3fzyJJNFBT5eODqHtxxkYZPiVSmCp2MNLPpwHQ/ZZEgtetwDpMXJPLltsMM7tiUx8fFEh0Z7nUskWpP7yZJuRX7jBe+2M6TyzZTq0YNHhkTw80DozR8SqSKqMClXLYcKBk+tX73MS7r0YJHxsTQOkLDp0SqkgpczktBkY+/rtjG08u30rBebebc1I/Rfdto+JSIB1TgUmYbdh9jUkIiqfuzGN23DdOv7UUzDZ8S8YwKXM4pt6Bk+NS8z9Jp0bAe834Sx4heLb2OJRLyVODyvb7adpjJCxLZeTiH/x4cxeSretConoZPiQQCFbic0Ym8Qh5bksrr3+yiQ7MwXvvZYIZ21vApkUCiApf/8PGmA0xdmExmVh4TLunEvSO6Ub+OboMXCTQqcPnO4ZP5zHwnhcUb9tK9ZUOevXUA/do39jqWiJyFClwwMxZv2MvMd1LIyivk3hHduHtYZ+rU0m3wIoFMBR7i9h3PZdrCZD5OzaRv+8Y8MS6W7q0aeh1LRMpABR6ifD7jjdW7eWzJJgp9PqZd05PxF3Wkpm6DFwkaKvAQtONQNpMXJLIq/QhDOzdj9thYopqFeR1LRM6TCjyEFBX7mP/Fdv6wbAt1atZg9tg+3DiwvW6DFwlSKvAQkbr/BJPiE9mQcZwRPVvy8PUxtIqo53UsEamAChW4c64xMA+IAQy4w8y+8kMu8ZP8omL+snwbzyxPI6J+bf588wWMim2to26RaqCiR+BzgKVm9iPnXB1AJ1IDyD93HWVSQiJbDpxkzAVteXBUL5qG1/E6loj4SbkL3DkXAVwC3A5gZgVAgX9iSUXkFBTxh2VbmP/Fdlo1qscLtw/k0h4tvI4lIn5WkSPwjsBB4AXnXF9gLXCPmWWf+iTn3ARgAkBUVFQFdidl8WXaISYvSGLXkRxuGRLFpJE9aKjhUyLVUkVutasF9Af+amYXANnA5NOfZGZzzSzOzOKaN29egd3J9zmeW8jkhET+e97X1KzheGPCEB6+vo/KW6Qaq8gReAaQYWZfl34ezxkKXCrfso37mfZ2ModO5vPzH5YMn6pXW8OnRKq7che4me13zu12znU3s83AcCDFf9HkXA6dzGfG4o28m7iPHq0aMu+2OGLbNfY6lohUkYpehfJr4NXSK1DSgfEVjyTnYma8vX4PM99JISe/mPsu78ZdwzpTu6aGT4mEkgoVuJmtB+L8E0XKYu+xXKYuTGL55oP0j2rM4+Ni6dpSw6dEQpHuxAwSPp/x6je7mL1kEz6D6df24icXRmv4lEgIU4EHgfSDJ5mckMQ3O45wcZdIHhvbh/ZNdc+USKhTgQewomIf8z7fzlMfbqFurRo88aNYbhjQTrfBiwigAg9YKXtPMDFhA8l7TnBl75bMui6GFo00fEpE/kUFHmDyi4p5+pM0/rpiG43DavPMj/tzVUwrHXWLyH9QgQeQtTuPMDE+kW0HsxnXvx0PjupJ4zANnxKRM1OBB4Ds/CJ+/8FmXvpqB20i6vPSHYP4YTeNHRCR76cC99hnWw8yZUESGUdzue3CDtw/sgcN6uqvRUTOTU3hkeM5hTz8Xgpvrc2gU/Nw3rrrQgZGN/U6logEERW4B5Ym7+PBRRs5kl3AL4Z15jfDu2r4lIicNxV4FcrMymP6oo28n7yfXq0b8cLtA4lpG+F1LBEJUirwKmBmJKzbw6x3U8gtLOb+K7sz4ZJOGj4lIhWiAq9kGUdzeGBhMiu3HCSuQxNmj4ulS4sGXscSkWpABV5JfD7j76t28vjSVABmju7NrUM6UEPDp0TET1TglSAt8ySTExJZs/Mol3RrzqNjYmjXRMOnRMS/VOB+VFjsY+7KdOZ8tJX6dWryhxv6MrZ/W90GLyKVosIF7pyrCawB9pjZqIpHCk7Je44zMT6RlH0nuLpPK2aOjqF5w7pexxKRaswfR+D3AJuARn54raCTV1jMnI+3MndlOk3D6/DsLf0ZGdPa61giEgIqVODOuXbANcAjwO/8kiiIrN5xhEnxiaQfyuaGAe2Ydk0vIsJqex1LREJERY/A/wRMBM66KKNzbgIwASAqKqqCuwsMJ/OLeGJpKi9/tZN2Terz958O4gddNXxKRKpWuQvcOTcKyDSztc65YWd7npnNBeYCxMXFWXn3FyhWbM5k6sJk9h7PZfxF0fzPFd0J1/ApEfFARZrnImC0c+5qoB7QyDn3ipnd4p9ogeVodgGz3kthwbo9dGnRgPi7hjKgQxOvY4lICCt3gZvZFGAKQOkR+P9Ux/I2M95P3s9Di5I5llPIry/rwq8u60LdWho+JSLe0s/+3yPzRB4PLkrmg40H6NM2gpfvGEyvNiF5sY2IBCC/FLiZrQBW+OO1AoGZ8daaDB5+L4X8Ih+Tr+rBnRd3pJaGT4lIANER+Gl2H8lhyoIkPk87xKDopswe14dOzTV8SkQCjwq8VLHPeOnLHfz+g83UrOGYdX0MPx4UpeFTIhKwVODA1gNZTEpIZN2uYwzr3pxHx/ShTeP6XscSEfleIV3gBUU+/vbpNv78SRrhdWvypxv7cV2/Nho+JSJBIWQLPDHjGBPjE0ndn8Wo2NbMGN2byAYaPiUiwSPkCjyvsJinPtzCc5+lE9mgLnNvHcAVvVt5HUtE5LyFVIGvSj/M5IREdhzO4eZB7Zl8VU8i6mv4lIgEp5Ao8Ky8Qma/n8qrX+8iqmkYr905mKFdIr2OJSJSIdW+wD9JPcDUhckcOJHHnRd35HdXdCOsTrX/3xaREFBtm+xIdgH/+85G3l6/l64tGvDM3UO5IErDp0Sk+qh2BW5mvJO4jxmLN3Iit5B7hnflF5d21vApEal2qlWB7z+ex7S3k/lo0wFi20XwxM8G06OVhk+JSPVULQrczHhj9W4efW8ThT4fU6/uyfiLojV8SkSqtaAv8J2Hs5mckMRX6YcZ0qkps8fGEh0Z7nUsEZFKF7QFXuwzXvhiO08u20ztGjV4dEwfbhrYXsOnRCRkBGWBb96fxcSERDbsPsbwHi14eEwMrSM0fEpEQktFFjVuD7wMtAQMmGtmc/wV7EwKinw8syKNvyxPo2G92sy5qR+j+2r4lIiEpoocgRcB95nZOudcQ2Ctc+5DM0vxU7Z/s373MSbFJ7L5QBbX9WvDQ6N60UzDp0QkhFVkUeN9wL7Sj7Occ5uAtoDfC/zPH2/lqY+20KJhPZ6/LY7hPVv6exciIkHHL+fAnXPRwAXA12d4bAIwASAqKqpcrx/VLIybBkUx+aoeNKqn4VMiIgDOzCr2As41AD4FHjGzBd/33Li4OFuzZk2F9iciEmqcc2vNLO707RW608U5VxtIAF49V3mLiIh/lbvAXcmlH88Dm8zsj/6LJCIiZVGRI/CLgFuBy5xz60t/Xe2nXCIicg4VuQrlc0AXYIuIeETTnkREgpQKXEQkSKnARUSClApcRCRIVfhGnvPamXMHgZ3l/M8jgUN+jOMvynV+lOv8KNf5CdRcULFsHcys+ekbq7TAK8I5t+ZMdyJ5TbnOj3KdH+U6P4GaCyonm06hiIgEKRW4iEiQCqYCn+t1gLNQrvOjXOdHuc5PoOaCSsgWNOfARUTk3wXTEbiIiJxCBS4iEqQCvsCdc/Odc5nOuWSvs5zKOdfeObfcOZfinNvonLvH60wAzrl6zrlvnHMbSnPN9DrTqZxzNZ1z/3TOvet1lm8553Y455JKJ2oGzIojzrnGzrl451yqc26Tc+7CAMjU/ZTpo+udcyecc7/1OheAc+7e0q/5ZOfc6865el5nAnDO3VOaaaO//6wC/hy4c+4S4CTwspnFeJ3nW8651kDrUxd1Bq6vrEWdzyOXA8LN7GTpghufA/eY2Sovc33LOfc7IA5oZGajvM4DJQUOxJlZQN0A4px7CfjMzOY55+oAYWZ2zONY33HO1QT2AIPNrLw36PkrS1tKvtZ7mVmuc+5NYImZvehxrhjgDWAQUAAsBe4yszR/vH7AH4Gb2UrgiNc5Tmdm+8xsXenHWcC3izp7ykqcLP20dumvgPgu7ZxrB1wDzPM6S6BzzkUAl1CyaApmVhBI5V1qOLDN6/I+RS2gvnOuFhAG7PU4D0BP4GszyzGzIkqWnxzrrxcP+AIPBt+3qLMXSk9TrAcygQ/NLCByAX8CJgI+j3OczoBlzrm1pYtwB4KOwEHghdJTTvOcc+FehzrNTcDrXocAMLM9wJPALmAfcNzMlnmbCoBk4AfOuWbOuTDgaqC9v15cBV5BpYs6JwC/NbMTXucBMLNiM+sHtAMGlf4Y5ynn3Cgg08zWep3lDC42s/7AVcAvS0/bea0W0B/4q5ldAGQDk72N9C+lp3RGA295nQXAOdcEuI6Sb3xtgHDn3C3epgIz2wQ8Diyj5PTJeqDYX6+vAq+AQF/UufRH7uXASI+jQMkSfKNLzze/QclSfK94G6lE6dEbZpYJLKTkfKXXMoCMU356iqek0APFVcA6MzvgdZBSI4DtZnbQzAqBBcBQjzMBYGbPm9kAM7sEOAps8ddrq8DLKVAXdXbONXfONS79uD5wOZDqaSjAzKaYWTszi6bkR+9PzMzzIyTnXHjpm9CUnqK4gpIfez1lZvuB3c657qWbhgOevkF+mpsJkNMnpXYBQ5xzYaX/NodT8r6U55xzLUp/j6Lk/Pdr/nrtcq+JWVWcc68Dw4BI51wGMN3Mnvc2FfCvRZ2TSs83AzxgZku8iwRAa+Cl0isEagBvmlnAXLIXgFoCC0v+zVMLeM3Mlnob6Tu/Bl4tPV2RDoz3OA/w3Te6y4Gfe53lW2b2tXMuHlgHFAH/JHBuq09wzjUDCoFf+vPN6IC/jFBERM5Mp1BERIKUClxEJEipwEVEgpQKXEQkSKnARUSClApcRCRIqcBFRILU/wNQQg9YnvH6KAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt #加载基本绘图包   \n",
    "plt.plot(x,y);                  #线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(x,y,'o-');            #点线图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "from numpy import *    #加载数值运算包\n",
    "t=linspace(0,2*pi)\n",
    "x=2*sin(t);y=3*cos(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt    #加载基本绘图包\n",
    "plt.plot(x,y,c='red'); plt.axvline(x=0); plt.axhline(y=0);\n",
    "plt.text(0.2,1,r'$\\frac{x^2}{2^2}+\\frac{y^2}{3^2}=1$',fontsize=15);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.3.2  Python在线分析平台"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "国外（较慢）：www.jupyter.org\n",
    "\n",
    "国内（注册）：https://www.heywhale.com/mw/project/5f619f7aae300e004602aa3d?token=3aff97571dcb6299"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true,
    "toc-nb-collapsed": true
   },
   "source": [
    "## 1.4  Python编程入门"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "toc-hr-collapsed": true,
    "toc-nb-collapsed": true
   },
   "source": [
    "### 　1.4.1  Python的工作目录"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\kit\\\\Desktop\\\\DataCode'"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#获得当前目录\n",
    "%pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[WinError 2] 系统找不到指定的文件。: 'D:\\\\\\\\DataCode'\n",
      "C:\\Users\\kit\\Desktop\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "'C:\\\\Users\\\\kit\\\\Desktop'"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#改变工作目录\n",
    "%cd \"D:\\\\DataCode\"\n",
    "%pwd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.4.2  Python的分析用包"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.4.2.1 常用的数据分析包"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.4.2.2 Python包的安装与加载"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "ERROR: Invalid requirement: '#安装'\n"
     ]
    }
   ],
   "source": [
    "!pip install plotnine  #安装 plotnine 包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [],
   "source": [
    "import math            #基础数学包\n",
    "import numpy           #数值分析包\n",
    "import pandas          #数据操作包\n",
    "import matplotlib      #基本绘图包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "from math import sqrt, log, pi"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "from IPython.core.interactiveshell import InteractiveShell as IS\n",
    "IS.ast_node_interactivity = \"all\"            #多行命令一次输出"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 　1.4.3  Python的数据类型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.4.3.1  Python对象"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "#查看数据对象\n",
    "#%who"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "#生成数据对象 \n",
    "x=10.12 #创建对象 x\n",
    "#%who"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "#删除数据对象 \n",
    "del x #删除对象 x\n",
    "#%who"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.4.3.2  基本数据类型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）数值型 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "n=10             #整数\n",
    "n                #无格式输出，相当于 print(n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n= 10\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "10.234"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10.234\n",
      "x=  10.23400\n"
     ]
    }
   ],
   "source": [
    "print(\"n=\",n)    #有格式输出\n",
    "x=10.234         #实数\n",
    "x\n",
    "print(x) \n",
    "print(\"x=%10.5f\"%x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（2）逻辑型 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a=True;a \n",
    "b=False;b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "10>3\n",
    "10<3"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（3）字符型 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'I love Python'"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "'P'"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "'love'"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "'I love Python I love Python'"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "'I love PythonI love Python'"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s = 'I love Python';\n",
    "s\n",
    "s[7]\n",
    "s[2:6] \n",
    "s+' '+s \n",
    "s*2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "1.4.3.3 标准数据类型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）List（列表）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[]"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list1 =[]          # 空列表\n",
    "list1 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['Python', 786, 2.23, 'R', 70.2]"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list1 = ['Python', 786 , 2.23, 'R', 70.2]\n",
    "list1               # 输出完整列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Python'"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list1[0]            # 输出列表的第一个元素 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[786, 2.23]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list1[1:3]          # 输出第二个至第三个元素 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[2.23, 'R', 70.2]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "['Python', 786, 2.23, 'R', 70.2, 'Python', 786, 2.23, 'R', 70.2]"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "['Python', 786, 2.23, 'R', 70.2, 2.23, 'R']"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "list1[2:]           # 输出从第三个开始至列表末尾的所有元素\n",
    "list1 * 2           # 输出列表两次 \n",
    "list1 + list1[2:4]  # 打印组合的列表"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[1, 3, 6, 4, 9]"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X=[1,3,6,4,9];X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['女', '男', '男', '女', '男']"
      ]
     },
     "execution_count": 50,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sex=['女','男','男','女','男']\n",
    "sex "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[67, 66, 83, 68, 70]"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "weight=[67,66,83,68,70]; \n",
    "weight"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（2）Dictionary（字典） "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{}"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "{} #空字典"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'name': 'john', 'code': 6734, 'dept': 'sales'}"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict1={'name':'john','code':6734,'dept':'sales'};dict1 #定义字典 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6734"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict1['code'] # 输出键为'code' 的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_keys(['name', 'code', 'dept'])"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict1.keys() # 输出所有键 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "dict_values(['john', 6734, 'sales'])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict1.values() # 输出所有值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'sex': ['女', '男', '男', '女', '男'], 'weight': [67, 66, 83, 68, 70]}"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict2={'sex': sex,'weight':weight}; dict2 #根据列表构成字典"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.5"
  },
  "toc-showtags": false
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
